package mo.leetcode_hot;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class L56 {

    public int[][] merge(int[][] intervals) {
        if (intervals.length == 0) {
            return new int[0][0];
        }
        Arrays.sort(intervals, ((a1, a2) -> {
            if (a1[0] != a2[0]) {
                return a1[0] - a2[0];
            } else {
                return a1[1] - a2[1];
            }
        }));
        List<int[]> res = new ArrayList<>();
        res.add(intervals[0]);
        for (int i = 1; i < intervals.length; i++) {
            if (intervals[i][0] >= res.get(res.size()-1)[0] && intervals[i][0] <= res.get(res.size()-1)[1]) {
                res.get(res.size()-1)[1] = Math.max(res.get(res.size()-1)[1], intervals[i][1]);
            } else {
                res.add(intervals[i]);
            }
        }
        return res.toArray(new int[0][]);
    }

}
